1. Field of the Invention
This invention relates to the implementation of an encryption mechanism for accessing sensitive information in a computer, computerized device, or system containing a central processing unit (CPU).
2. Background
Encryption is useful to protect information from unauthorized others. However, encryption technology, no matter how good, will not protect against attacks directed toward flawed implementations of the technology. Encryption technologies use computer-implemented algorithms that use a key to process the information that is to be encrypted or decrypted. No matter how strong the encryption algorithm, or how large the key, if the key is predictable, or if the key can be determined, the protection sought to be provided by the encryption will fail.
Encryption techniques are well known in the art. Implementation of encryption techniques is difficult and often subject to indirect attacks (that is, attacks directed not at the encryption algorithm or encrypted data, but rather at the encryption key).
One approach attackers use when attacking an encryption schema is that the attacker will attempt to interrupt the execution of the encryption algorithm by using breakpoints or execution trace mechanisms. The attacker is then able to determine the encryption algorithm and the techniques used to generate the key. For example, an attacker using these methods will easily find the key if the key is stored in a database (such as the Windows registry or the Macintosh desktop), or if the key is stored in the encryption algorithm itself,
This problem increases the risk to providers of proprietary programming because their proprietary programming can often be discovered (reverse engineered) and disseminated to others thus affecting the revenue potential of owner of the proprietary programming.
Other complementary approaches to increase the resilience of encryption code to an attack is to execute the encryption code on the stack, to write the encryption code as self modifying code, and other known techniques. These techniques can be used with the invention. Thus, it would be advantageous to increase the difficulty associated with determining the encryption key for an encryption algorithm.